home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 8 / FM Towns Free Software Collection 8.iso / t_os / artemis / artsrc2 / sprlib.c < prev    next >
C/C++ Source or Header  |  1994-06-01  |  1KB  |  69 lines

  1. /*
  2.     sprlib.c
  3. */
  4.  
  5. #include <stdio.h>
  6. #include <spr.h>
  7. #include <ryosuke.h>
  8. #include "usrlib.h"
  9.  
  10. // static int dispnum = 221;    // ( (1/60)*1000*1000 (micro sec) - 32 ) / 75
  11. static int dispnum = 221;
  12. static int _16spr = 0;            // 16色スプライトの枚数
  13.                                 // (0..896) (のこりは32K色スプライトになる)
  14.  
  15. void sp_init(int _dispnum)
  16. // dispnum:表示する枚数
  17. {
  18.     dispnum = _dispnum;
  19.     SPR_init();
  20.     SPR_display(1,dispnum);
  21. }
  22.  
  23. void sp_end()
  24. {
  25.     SPR_display(0,dispnum);
  26. }
  27.  
  28. void sp_16colspr(int n)
  29. {
  30.     _16spr = n;
  31. }
  32.  
  33. void sp_def(int patn, char *pattern)
  34. // patn : 0..895
  35. {
  36.     if (patn < _16spr) {
  37.         SPR_define(0, 128+patn, 1,1, pattern);
  38.     } else {
  39.         SPR_define(1, 128+_16spr+(patn-_16spr)*4, 1,1, pattern);
  40.     }
  41. }
  42.  
  43. void sp_pltblk(int pltblkn, char *pltblk)
  44. // pltblkn : 0..255
  45. {
  46.     SPR_setPaletteBlock(256+pltblkn, 1, pltblk);
  47. }
  48.  
  49. void sp_put(int index, int x, int y, int patn, int pltblk)
  50. // index : 0..1023 (番号が小さいほど優先順位が高い)
  51. // pltblk : 0..255 32K 色スプライトの場合は無効
  52. {
  53.     if (patn < _16spr)
  54.         SPR_setAttribute((dispnum-1-index), 1,1, 128+patn, 0x8000 | (256+pltblk));
  55.     else
  56.         SPR_setAttribute((dispnum-1-index), 1,1, 128+_16spr+(patn-_16spr)*4, 0);
  57.     SPR_setPosition(0, (dispnum-1-index), 1,1, x,y);
  58. }
  59.  
  60.  
  61. void sp_erase(int index, int num)
  62. {
  63.     if (num>0)
  64.         SPR_setAttribute((dispnum-index-num),num,1,0,1<<13);
  65. }
  66.  
  67.  
  68. /* end of sprlib.c */
  69.